package com.servicio.common.UI;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Properties;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.border.MatteBorder;

import com.servicio.common.UI.login.LoginFrame;
import java.awt.Font;

public class MDIWindow {

	private JFrame frmServicioDeDiagnstico;

	public static JDesktopPane desktopPane;

	public Vector<JInternalFrame> windows = new Vector<JInternalFrame>();
	public Vector<JMenuItem> itemsOpened = new Vector<JMenuItem>();

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {

				try {
					Properties props = new Properties();
					props.put("logoString", "JServicio");
					props.put("licenseKey", "GPL");


					try {
					    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
					        if ("Windows".equals(info.getName())) {
					            UIManager.setLookAndFeel(info.getClassName());
					            break;
					        }
					    }
					} catch (Exception e) {
					    // If Nimbus is not available, you can set the GUI to another look and feel.
					}

					MDIWindow window = new MDIWindow();
					window.frmServicioDeDiagnstico.setVisible(true);

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public MDIWindow() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frmServicioDeDiagnstico = new JFrame();
		frmServicioDeDiagnstico
				.setTitle("[Servicio de Diagn\u00F3stico por Im\u00E1genes - CEMEDA ] - JServicio");
		frmServicioDeDiagnstico.setBounds(100, 100, 450, 300);
		frmServicioDeDiagnstico.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		desktopPane = new JDesktopPane();
		desktopPane.setBorder(new MatteBorder(1, 1, 1, 1, (Color) Color.GRAY));
		desktopPane.setBackground(Color.GRAY);
		// frmServicioDeDiagnstico.getContentPane().add(desktopPane,
		// BorderLayout.CENTER);
		desktopPane.setLayout(null);

		JScrollPane scrollpane = new JScrollPane(desktopPane,
				JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

		frmServicioDeDiagnstico.getContentPane().add(scrollpane,
				BorderLayout.CENTER);

		JPopupMenu popupMenu = new JPopupMenu();
		addPopup(frmServicioDeDiagnstico, popupMenu);

		JMenuItem mntmNewMenuItem_3 = new JMenuItem("Estudios...");
		popupMenu.add(mntmNewMenuItem_3);

		JMenuItem mntmDiagnosticos = new JMenuItem("Diagnosticos...");
		popupMenu.add(mntmDiagnosticos);

		JMenuBar menuBar = new JMenuBar();
		menuBar.setFont(new Font("Segoe UI", Font.BOLD, 14));
		menuBar.setMargin(new Insets(2, 2, 2, 2));
		frmServicioDeDiagnstico.setJMenuBar(menuBar);

		JMenu mnFile = new JMenu("Sistema ");
		menuBar.add(mnFile);

		JMenuItem mntmOpen = new JMenuItem("Open");
		mntmOpen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// TestInternalFrame frmTest = new TestInternalFrame();
				NewPractice frmNewPractice = new NewPractice();

				MDIWindow.desktopPane.add(frmNewPractice);
				frmNewPractice.setVisible(true);
				// frmTest.setVisible(true);

			}
		});
		mnFile.add(mntmOpen);

		JMenu mnNewMenu = new JMenu("Administracion ");
		mnNewMenu.setIcon(null);
		mnNewMenu.setHorizontalAlignment(SwingConstants.CENTER);
		menuBar.add(mnNewMenu);

		JMenuItem mntmNewMenuItem = new JMenuItem("Estudios...");
		mnNewMenu.add(mntmNewMenuItem);

		JMenuItem mntmNewMenuItem_1 = new JMenuItem("Diagnosticos...");
		mnNewMenu.add(mntmNewMenuItem_1);

		JMenuItem mntmPacientes = new JMenuItem("Pacientes...");
		mnNewMenu.add(mntmPacientes);

		JMenuItem mntmFacturacion = new JMenuItem("Facturacion...");
		mntmFacturacion.setIcon(new ImageIcon(MDIWindow.class
				.getResource("/gui/showReports.png")));
		mntmFacturacion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// TestInternalFrame frmTest = new TestInternalFrame();
				PresentarWindow frmPresentar = new PresentarWindow();
				frmPresentar.setTitle("Procesar Facturacion");

				MDIWindow.desktopPane.add(frmPresentar);
				frmPresentar.setVisible(true);
				// frmTest.setVisible(true);
			}
		});
		mnNewMenu.add(mntmFacturacion);

		JMenuItem mntmContabilidad = new JMenuItem("Contabilidad...");
		mntmContabilidad.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				AsientosFrame frmAsientos = new AsientosFrame();
				frmAsientos.setTitle("Libro Diario");
				MDIWindow.desktopPane.add(frmAsientos);
				frmAsientos.setVisible(true);
			}
		});
		mntmContabilidad.setIcon(new ImageIcon(MDIWindow.class
				.getResource("/gui/account.png")));
		mnNewMenu.add(mntmContabilidad);

		JMenuItem mntmSeguimientoDeEstudios = new JMenuItem(
				"Seguimiento de Estudios...");
		mnNewMenu.add(mntmSeguimientoDeEstudios);

		JMenu mnActualizaciones = new JMenu("Actualizaciones ");
		mnActualizaciones.setHorizontalAlignment(SwingConstants.CENTER);
		menuBar.add(mnActualizaciones);

		JMenuItem mntmIngresoPaciente = new JMenuItem("Ingreso Paciente");
		mntmIngresoPaciente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				NewPatient frmNewPatient = new NewPatient();
				MDIWindow.desktopPane.add(frmNewPatient);
				frmNewPatient.setVisible(true);
			}
		});
		mnActualizaciones.add(mntmIngresoPaciente);

		JMenuItem mntmIngresoObraSocial = new JMenuItem("Ingreso Obra Social");
		mnActualizaciones.add(mntmIngresoObraSocial);

		JMenuItem mntmNomenclador = new JMenuItem("Nomenclador");
		mntmNomenclador.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				/*
				 * Nomenclator frmNomenclator = new Nomenclator();
				 * MDIWindow.desktopPane.add(frmNomenclator);
				 * frmNomenclator.setVisible(true);
				 */
				JInternalFrame t = new JInternalFrame();
				TableRender table = new TableRender();
				t.setContentPane(table);
				MDIWindow.desktopPane.add(t);
				t.setVisible(true);

			}
		});
		mnActualizaciones.add(mntmNomenclador);

		JMenu mnConfiguracion = new JMenu("Configuracion ");
		menuBar.add(mnConfiguracion);

		JMenuItem mntmCambioDeUsuario = new JMenuItem("Cambio de Usuario...");
		mntmCambioDeUsuario.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				LoginFrame frmLogin = LoginFrame.getInstance();
				MDIWindow.desktopPane.add(frmLogin);
				frmLogin.setVisible(true);

			}
		});
		mnConfiguracion.add(mntmCambioDeUsuario);

		JMenuItem mntmOrganizar = new JMenuItem("Organizar");
	}

	private static void addPopup(Component component, final JPopupMenu popup) {
		component.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent e) {
				if (e.isPopupTrigger()) {
					showMenu(e);
				}
			}

			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger()) {
					showMenu(e);
				}
			}

			private void showMenu(MouseEvent e) {
				popup.show(e.getComponent(), e.getX(), e.getY());
			}
		});
	}
}
